import os
# from PyPDF2 import PdfMerger
from PIL import Image

# 通过递归调用遍历指定文件夹的所有子文件夹。
# 对于每个子文件夹，如果它是一个目录，就将其路径添加到subfolders列表中，然后递归处理这个子文件夹。如果它不是一个目录，就跳过它。#
#
def get_subfolders(path):
    subfolders = []
    for foldername in os.listdir(path):
        if os.path.isdir(os.path.join(path, foldername)):
            subfolders.append(os.path.join(path, foldername))
            subfolders += get_subfolders(os.path.join(path, foldername))  # 递归调用以获取子文件夹
    return subfolders

def merge_images_to_pdf(image_dir, output_dir):
    """
    将指定文件夹内的所有图片合并成一个PDF文件
    :param image_dir: 图片文件夹路径
    :param output_dir: 输出PDF文件路径
    """
    # 获取文件夹名称
    folder_name = os.path.basename(image_dir)

    # 打开PDF文件
    pdf = Image.new('RGB', (1920, 1080), (255, 255, 255))

    # 遍历文件夹中的所有图片文件
    for filename in os.listdir(image_dir):
        if filename.endswith('.jpg') or filename.endswith('.png'):
            # 打开图片文件
            img = Image.open(os.path.join(image_dir, filename))

            # 将图片添加到PDF文件中
            pdf.appendimage(img)
            pdf.write(os.path.join(output_dir, f'{folder_name}.pdf'))
            break  # 只合并第一个图片文件

def run():
    # 设置图片文件夹路径和输出PDF文件路径
    output_dir = 'F:\\tran\\pdf\\'

    folder_path = 'F:\\tran\\contract\\'  # 修改为您的文件夹路径
    subfolders = get_subfolders(folder_path)

    # 递归遍历每个子文件夹，将每个子文件夹内的图片合并成一个PDF文件
    for subfolder in subfolders:
            merge_images_to_pdf(subfolder, output_dir)
